package com.bnz.util;


import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.bnz.dao.ItemDao;
import com.bnz.entity.ItemEntity;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate;

import java.util.List;
import java.util.Map;

/**
 * ES功能测试工具类
 */
@SpringBootTest
public class EsUtil {

    // ES
    @Autowired
    private ElasticsearchRestTemplate elasticsearchRestTemplate;
    // 导入相应表的dao(数据库)
    @Autowired
    private ItemDao itemDao;


    /**
     * 1、把数据库中tb_item表的数据导入到elasticsearch中
     */
    @Test
    public void test01(){
        // 1.1、对数据库查询(对状态值status=1查询) status=1表示，审核通过的sku商品列表
        List<ItemEntity> statusList = itemDao.selectList(new QueryWrapper<ItemEntity>().eq("status", 1));
        // 1.2、处理动态字段spec查询  对查询到的数据进行遍历
        for (ItemEntity item: statusList) {
            String spec = item.getSpec();
            // 1.2.1、将从中遍历的到的spec转换为map
            Map map = JSON.parseObject(spec, Map.class);
            // specMap表中没有，实体类里自定义的
            item.setSpecMap(map); // 把转换为map的数据，放进不存在表，自定义在实体类的map对象中
        }
        // 1.3、将数据导入到索引库当中（采用ElasticsearchRestTemplate）
        elasticsearchRestTemplate.save(statusList);// 放入的是查到的status=1的数据
        System.out.println("保存成功");
    }
}
